//Pull in DMA commands
#include <spu_mfcio.h>

// struktura do komunikacji z PPE
typedef struct {
	int fragment[4][4];
	int wagi[4][4];
	float suma;
	int padding[3];
} program_data;
int x,y;

int main(unsigned long long spe_id, unsigned long long program_data_ea, unsigned
long long env) {
	program_data pd __attribute__((aligned(16)));
	int tag_id = 0;

	// wczytanie danych
	// kopiowanie
	mfc_get(&pd, program_data_ea, sizeof(pd), tag_id, 0, 0);
	// czekanie na zakonczenie
	mfc_write_tag_mask(1<<tag_id);
	mfc_read_tag_status_any();

	// obliczenia
    /*for(x=0;x<4;x++){
        for(y=0;y<4;y++){
            pd.wagi[x][y]+=pd.fragment[x][y];
    	}
    }*/

	// wyslanie rezultatu
	// kopiowanie
	mfc_put(&pd, program_data_ea, sizeof(program_data), tag_id, 0, 0);
	// czekanie na zakonczenie
	mfc_write_tag_mask(1<<tag_id);
	mfc_read_tag_status_any();
	return 0;
}
